package persistence;

import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Collection;
import java.util.ListIterator;

import org.jdom2.Attribute;
import org.jdom2.Element;

import entidad.Estadistica;
import entidad.Word;


public class CargadorEstadisticasXML implements CargadorEstadisticasXMLInterfaz {
	

	public void save(Estadistica estadistica) {
		
		XMLHandler archivoxml= new XMLHandler("estadisticas.xml");

		Element elemento=new Element("estadistica");
        Attribute atr1= new Attribute("interesante",Integer.toString(estadistica.getTotalArticulosInteresantes()));
        Attribute atr2= new Attribute("noInteresante",Integer.toString(estadistica.getTotalArticulosNoInteresantes()));
        	
        elemento.getAttributes().add(atr1);
        elemento.getAttributes().add(atr2);
        archivoxml.guardarElemento(elemento, archivoxml.getcantidadelementos()+1);

	}

	/**
	 * 
	 * {@inheritDoc}
	 */
	public Estadistica findEstadistica() {

		//XMLHandler archivoxml = new XMLHandler("palabras.xml");	
		XMLHandler archivoxml = new XMLHandler("estadisticas.xml");
		//Element elementoPalabra= archivoxml.cargar();
		Element elementoRaiz= null;
		try{
		elementoRaiz = archivoxml.cargar();
		} catch (Exception e){
			return null; 
		}
		
		if (elementoRaiz.getChildren().isEmpty()){
			return null;
		}
		else{
			Element elementoEstadistica = elementoRaiz.getChildren().get(0);
			Estadistica estadistica= new Estadistica();
			estadistica.setTotalArticulosInteresantes(Integer.parseInt(elementoEstadistica.getAttributeValue("interesante")));
			estadistica.setTotalArticulosNoInteresantes(Integer.parseInt(elementoEstadistica.getAttributeValue("noInteresante")));
			return estadistica;
		}
    }
	

	/**
	 * 
	 * {@inheritDoc}
	 */
	public Word findWord(String id) {
		XMLHandler archivoxml =new XMLHandler("palabras.xml");
		ListIterator<Element> iterador = archivoxml.cargar().getChildren().listIterator();
		String search= id;
		Element elemento=null;
		while (iterador.hasNext() || search.equals(elemento.getAttributeValue("id"))){
			elemento = iterador.next();
		}
		Word word = new Word();
		if (!elemento.equals(null)){
			word.setId(elemento.getAttributeValue("id"));
			word.setProbabilidadNoInteresante(new BigDecimal(elemento.getAttributeValue("probNoSpam")));
			word.setProbabilidadInteresante(new BigDecimal(elemento.getAttributeValue("probSpam")));
		}

       return word;
	}

    /**
     * 
     * {@inheritDoc}
     */
    public void saveAll(Collection<Word> words) {

    		XMLHandler archivoxml = new XMLHandler("palabras.xml");	
    		for (Word word : words) {
    			Element elemento= new Element("id", word.getId());
                Attribute at1=new Attribute("probSpam", word.getProbabilidadInteresante().toString());
                Attribute at2=new Attribute("probNoSpam", word.getProbabilidadNoInteresante().toString());
                elemento.getAttributes().add(at1);
                elemento.getAttributes().add(at2);
                archivoxml.guardarElemento(elemento, archivoxml.getcantidadelementos()+1);
            }

    }

    /**
     * 
     * {@inheritDoc}
     */
	public void deleteAllWords() {

		XMLHandler archivoxml = new XMLHandler("palabras.xml");	
		Element elemento=null;
		try{
			elemento= archivoxml.cargar();
		} catch(Exception e) { System.out.notify(); }
		
		Element elemento2=new Element("");
		elemento.setContent(elemento2);
		archivoxml.guardarElemento(elemento, 1);
        
	}

	public void deleteAllEstadisticas() {

		XMLHandler archivoxml = new XMLHandler("estadisticas.xml");	
		Element elemento=null;
		try{
			elemento= archivoxml.cargar();
		} catch(Exception e) { System.out.notify(); }
		
		archivoxml.borrarElementos();
	}
	
}